import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'

axios.defaults.withCredentials = true;
// 创建一个axios实例
const request = axios.create({
    baseURL: "http://localhost:8089/api",
    timeout: 30000
});

// 添加请求拦截器
request.interceptors.request.use(
    /**
     * 在请求发送之前做一些处理，比如携带token之类的
     */
    request => {
        // 如果token不为空，则在headers添加token
        if (store.getters.token) {
            request.headers["Authorization"] = getToken();
        }
        return request;
    },
    error => {
        // 请求发生错误时，输出错误信息
        console.log(error);
        return Promise.reject(error);
    }
);

// 添加响应拦截器
request.interceptors.response.use(
    /**
     * 在响应之前做一些处理，比如根据响应码提示信息
     */
    response => {
        const res = response.data;
        // for dubug
        console.log(res);

        // 非正常响应
        if (res.code !== 200) {
            Message({
                message: res.message || "Unknow Error",
                type: "error",
                duration: 5000,
                showClose: true
            });
            return Promise.reject(new Error(res.message || 'Unknow Error'))
        } else {
            // 正常响应直接返回结果
            return res;
        }
    },
    error => {
        // 响应发生错误时，输出错误信息
        // console.log(error);
        return Promise.reject(error);
    }
);

// 导出axios实例
export default request;